# What is Hjson?
A configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
See http://hjson.org
Data types that can be encoded are JavaScript types (see the `serde_hjson:Value` enum for more
details):
* `Boolean`: equivalent to rust's `bool`
* `I64`: equivalent to rust's `i64`
* `U64`: equivalent to rust's `u64`
* `F64`: equivalent to rust's `f64`
* `String`: equivalent to rust's `String`
* `Array`: equivalent to rust's `Vec`, but also allowing objects of different types in the
same array
* `Object`: equivalent to rust's `serde_hjson::Map`
* `Null`
# Examples of use
## Parsing a `str` to `Value` and reading the result
```rust
//#![feature(custom_derive, plugin)]
//#![plugin(serde_macros)]
extern crate serde_hjson;
use serde_hjson::Value;
fn main() {
let data: Value = serde_hjson::from_str("{foo: 13, bar: \"baz\"}").unwrap();
println!("data: {:?}", data);
println!("object? {}", data.is_object());
let obj = data.as_object().unwrap();
let foo = obj.get("foo").unwrap();
println!("array? {:?}", foo.as_array());
// array? None
println!("u64? {:?}", foo.as_u64());
// u64? Some(13u64)
for (key, value) in obj.iter() {
println!("{}: {}", key, match *value {
Value::U64(v) => format!("{} (u64)", v),
Value::String(ref v) => format!("{} (string)", v),
_ => unreachable!(),
});
}
// bar: baz (string)
// foo: 13 (u64)
}
```